/**
 * 题目描述
 */
function canUpgradeVersion(currentVersion, targetVersion) {
    // 格式校验，只校验前两部分为数字，第三部分可以为任意非空字符
    if (
        !/^\d+\.\d+\.\S+$/.test(currentVersion) ||
        !/^\d+\.\d+\.\S+$/.test(targetVersion)
    ) {
        return false;
    }

    const currentParts = currentVersion.split('.');
    const targetParts = targetVersion.split('.');

    // 版本号比较
    for (let i = 0; i < 3; i++) {
        const currentPart =
            i < 2 ? parseInt(currentParts[i], 10) : currentParts[i];
        const targetPart =
            i < 2 ? parseInt(targetParts[i], 10) : targetParts[i];

        if (targetPart < currentPart) {
            return false; // 目标版本小于当前版本，不能升级
        }

        if (targetPart > currentPart) {
            return true; // 目标版本大于当前版本，可以升级
        }
    }

    return false; // 版本号完全相同（前两位数字和第三位都相同），认为不能升级
}

console.log(canUpgradeVersion('1.2.3', '1.2.4')); // true
console.log(canUpgradeVersion('1.2.3', '1.2.2')); // false
console.log(canUpgradeVersion('1.2', '1.2.3')); // false（格式校验失败）
console.log(canUpgradeVersion('1.2.3', '1.2.3')); // false（版本号完全相同）
console.log(canUpgradeVersion('1.10.a', '1.10.b')); // true
console.log(canUpgradeVersion('1.10.b', '1.10.a')); // false
console.log(canUpgradeVersion('1.10.10', '1.10.a')); // true（因为'a'在ASCII表中比'1'大）
console.log(canUpgradeVersion('2.0.0', '1.99.z')); // false
